#include<cstdio>
#include<algorithm>
#include<functional>
using namespace std;
void func()
{
    long long n,m,L,V;
    scanf("%lld%lld%lld%lld",&n,&m,&L,&V);
    long long d[100010],v[100010],a[100010];
    bool flg=true;
    for(int i=0;i<n;i++)
    {
        scanf("%lld%lld%lld",&d[i],&v[i],&a[i]);
        if(a[i]<0)
        {
            flg=false;
        }
    }
    long long p[100010];
    for(int i=0;i<m;i++)
    {
        scanf("%lld",&p[i]);
    }
    sort(p,p+m);
    int ans=0;
    long long osp;
    for(int i=0;i<n;i++)
    {
        if(a[i]!=0)
        {
            osp=(V*V-v[i]*v[i]);
            if(p[m-1]*a[i]*2ll>(osp+d[i]*a[i]*2ll))
            {
                ans++;
            }
        }
        else
        {
            if(p[m-1]>=d[i]&&(v[i]>V))
            {
                ans++;
            }
        }
    }
    if(ans!=0)
    {
        printf("%d %lld\n",ans,m-1);
    }
    else
    {
        printf("%d %lld\n",ans,m);
    }

}
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int T;
    scanf("%d",&T);
    for(int i=0;i<T;i++)
    {
        func();
    }
    return 0;
}
